// alipay-payment.js
const app = getApp()

Page({
  data: {
    order: null,
    buyerInfo: {
      account: '',
      name: '',
      balance: ''
    },
    password: '',
    paymentStatus: ''
  },

  onLoad(options) {
    console.log('支付宝支付页面加载，接收到的参数:', options)
    
    // 从本地存储获取订单信息
    const orderData = wx.getStorageSync('alipayOrderData')
    if (orderData) {
      this.setData({
        order: orderData
      })
      console.log('订单信息:', orderData)
      
      // 动态获取买家信息
      this.getBuyerInfo()
    } else {
      wx.showModal({
        title: '参数错误',
        content: '订单信息不存在，无法进行支付',
        showCancel: false,
        confirmText: '返回',
        success: () => {
          wx.navigateBack()
        }
      })
    }
  },

  // 获取买家信息
  getBuyerInfo() {
    const token = wx.getStorageSync('token')
    if (!token) {
      console.error('未找到用户token')
      // 使用默认沙箱信息
      this.setData({
        buyerInfo: {
          account: 'nyjmtg4466@sandbox.com',
          name: 'nyjmtg4466',
          balance: '2608015.93'
        }
      })
      return
    }

    wx.request({
      url: 'http://localhost:8081/user/getUserInfo',
      method: 'GET',
      header: {
        'token': token,
        'Content-Type': 'application/json'
      },
      success: (res) => {
        console.log('买家信息响应:', res.data)
        if (res.data && res.data.code === 200) {
          const userInfo = res.data.data
          this.setData({
            buyerInfo: {
              account: userInfo.email || userInfo.username + '@sandbox.com',
              name: userInfo.nickname || userInfo.username || 'nyjmtg4466',
              balance: '2608015.93' // 沙箱固定余额
            }
          })
        } else {
          // 使用默认沙箱信息
          this.setData({
            buyerInfo: {
              account: 'nyjmtg4466@sandbox.com',
              name: 'nyjmtg4466',
              balance: '2608015.93'
            }
          })
        }
      },
      fail: (err) => {
        console.error('获取买家信息失败:', err)
        // 使用默认沙箱信息
        this.setData({
          buyerInfo: {
            account: 'nyjmtg4466@sandbox.com',
            name: 'nyjmtg4466',
            balance: '2608015.93'
          }
        })
      }
    })
  },

  // 密码输入
  onPasswordInput(e) {
    const password = e.detail.value
    this.setData({
      password: password
    })
  },

  // 清理密码数据（安全措施）
  clearPasswordData() {
    this.setData({
      password: ''
    })
  },

  // 确认支付
  onConfirmPayment() {
    const { order, password } = this.data
    
    if (!password || password.length !== 6) {
      wx.showToast({
        title: '请输入6位支付密码',
        icon: 'none'
      })
      return
    }

    // 显示支付中状态
    wx.showLoading({
      title: '正在支付...'
    })

    // 调用支付API直接完成支付
    this.callPaymentAPI(order, password)
  },

  // 调用支付API
  callPaymentAPI(order, password) {
    const token = wx.getStorageSync('token')
    if (!token) {
      wx.hideLoading()
      wx.showToast({
        title: '请先登录',
        icon: 'none'
      })
      return
    }

    wx.request({
      url: 'http://localhost:8081/api/productpay/passwordPay',
      method: 'POST',
      header: {
        'Content-Type': 'application/json',
        'token': token
      },
      data: {
        orderId: order.id,
        paymentPassword: password
      },
      success: (res) => {
        wx.hideLoading()
        console.log('支付API响应状态:', res.data?.code, res.data?.message)
        
        if (res.data && res.data.code === 200) {
          // 支付成功
          this.setData({
            paymentStatus: 'success'
          })
          
          // 显示成功提示
          wx.showToast({
            title: '支付成功',
            icon: 'success'
          })
          
          // 延迟跳转到订单列表页面
          setTimeout(() => {
            // 清除本地存储的订单数据
            wx.removeStorageSync('alipayOrderData')
            
            // 清理密码数据
            this.clearPasswordData()
            
            // 使用 redirectTo 替换当前页面，避免返回时回到支付页面
            wx.redirectTo({
              url: '/pages/order/order',
              success: () => {
                console.log('跳转到订单列表页面成功')
              },
              fail: (err) => {
                console.error('跳转到订单列表页面失败:', err)
                // 如果跳转失败，返回上一页
                wx.navigateBack()
              }
            })
          }, 2000)
        } else {
          // 支付失败
          this.setData({
            paymentStatus: 'error'
          })
          
          wx.showToast({
            title: res.data?.message || '支付失败',
            icon: 'none'
          })
          
          // 3秒后隐藏错误状态
          setTimeout(() => {
            this.setData({
              paymentStatus: ''
            })
          }, 3000)
        }
      },
      fail: (err) => {
        wx.hideLoading()
        console.error('支付API调用失败:', err)
        
        this.setData({
          paymentStatus: 'error'
        })
        
        wx.showToast({
          title: '网络错误，请重试',
          icon: 'none'
        })
        
        // 3秒后隐藏错误状态
        setTimeout(() => {
          this.setData({
            paymentStatus: ''
          })
        }, 3000)
      }
    })
  },

  // 返回上一页
  onBack() {
    wx.navigateBack()
  },

  // 页面显示时刷新数据
  onShow() {
    // 可以在这里刷新订单状态
  },

  // 页面隐藏时清理敏感数据
  onHide() {
    // 清理密码数据，防止密码残留在内存中
    this.clearPasswordData()
  }
})
